#ifndef GRACZ_H
#define GRACZ_H

#include "string"
#include "iostream"
#include "resource.h"
#include "ekonomia.h"
#include "wyjatki.h"
#include <vector>

using namespace std;

#define LIMIT_POZYCZEK 100000

class CGracz : public CEkonomia
{
	string Nazwa;
	unsigned int Tura;
	int StanKonta;
	int AktualneZaduzenie;
public:
	std::vector<SKredyt> ListaKredytow;
	CGracz(unsigned int poziom, string _nazwa) {
		Nazwa = _nazwa;
		CEkonomia::WczytajPoziom(poziom);
		StanKonta = CEkonomia::ZwrocKasaPoczatkowa();
		Tura = 1;
		CEkonomia::WygenerujTWL();
		AktualneZaduzenie = CEkonomia::ZwrocPozyczki();
		if(AktualneZaduzenie!=0) 
			{
				SKredyt tempkredyt(AktualneZaduzenie, 0);
				ListaKredytow.push_back(tempkredyt);
			}
		//cout << "Konstruktor gracza zostal wywolany" << endl;
		};
	CGracz();
	string ZwrocNazweGracza() { return Nazwa; }
	string ZwrocNazweMiasta() { return CEkonomia::ZwrocNazweMiasta(); }
	int ZwrocPoziom() { return CEkonomia::ZwrocPoziom(); }
	int ZwrocStanKonta() { return StanKonta + AktualneZaduzenie; }
	int ZwrocAktualneZaduzenie() { return AktualneZaduzenie; }
	double ZwrocTWL() { return CEkonomia::ZwrocTWL(); }
	unsigned int ZwrocTure();
	void WykonajTure(unsigned int PieniadzePozyskaneZAtrakcji);
	int OdliczKase(int koszt) { return StanKonta = StanKonta - koszt; } //To jest jeszcze do przerobienia poniewaz jesli
																//gracz kupi to kasa pobierana jest tylko z kasy, a nie z pozyczek
	void SplacKredyt();
	void UstawStanKonta(const int stan_konta) { StanKonta = stan_konta; }
	void UstawZadluzenie() { 
		for(unsigned int i = 0 ; i < ListaKredytow.size() ; i++)
			AktualneZaduzenie += ListaKredytow[i].ZwrocKwota();
	}
	void UstawTure(const unsigned int tura) { Tura = tura; }
	void PozyczKase(unsigned int pozyczka);
};
#endif